//引入第三方包 express
var express = require('express');
//引入第三方包 express-jwt
var { expressjwt } = require('express-jwt')

//实例化express
var app = express()


//设置静态资源托管文件夹
//app.use() 注册中间件
//express.static() express内置的一个静态资源托管的中间件
app.use( express.static('static') );

//在所有接口前设置 处理post请求参数的中间件
app.use( express.json() );
app.use( express.urlencoded({extended:false}) );

//设置token验证的中间件
//unless 设置白名单( 白名单中的接口都可以免除验证 )
app.use( expressjwt({
    secret: '1234' ,//密钥
    algorithms: ['HS256'], //算法
}).unless( { path:['/user/login','/user/register'] } ) );

//导入拆分出去的子路由
var userRouter = require('./router/userRouter')
var goodRouter = require('./router/goodRouter')

//注册子路由, 凡是 '/user' 开头的请求, 都找userRouter这个子路由来提供服务.
//前端发请求 '/user/list' , '/user/search' , '/user/login'  都会找userRouter
app.use( '/user' , userRouter )

//前端发请求 '/good/list' , '/good/search' , 都会找goodRouter
app.use( '/good' , goodRouter )

//服务器端存储数据,可以使用JSON文件, 也可以使用数据库软件
//使用JSON文件存储数据的弊端: 任何一个人只要拿到该文件都可以看到文件内容(不安全).
//使用JSON文件存储数据的弊端: 存储海量数据,可能存储数据丢失.

//使用数据库软件存储数据的弊端: 有一定的门槛(学习)
//使用数据库软件存储数据的优势: 存储在数据库中的数据是经过加密的, 海量数据会自动拆分文件存储, 有防内存溢出的手段.

//常用的数据库软件有: mysql,sqlserver,oracle,access,mongodb,其他文件数据库.
//我们学习mongodb, 理由是: 它是用js操作数据库

//设置监听
app.listen(8080,()=>{
    console.log('服务端运行在: http://localhost:8080');
})



